package leitorDeArquivo;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;

import classePrincipal.Deputado;

public class ResumoDeputados {
	
	private ArrayList<Deputado> deputadosDoPlenario = new ArrayList<Deputado>();
	
	
	public void load(String path)throws IOException{
		
		BufferedReader leitor = new BufferedReader(new FileReader(path));
		leitor.readLine();
		
		while (leitor.ready()){
			String linha = leitor.readLine();
			String [] tokens = {"0","0","0","0","0","0","0"};
			tokens = linha.split(",");
			
			String nome = tokens[0];
			String estado = tokens[1];
			String regiao = tokens[2];
			String partido = tokens[3];
			String posicao = tokens[4];
			double gastosTotal = Double.parseDouble( tokens[5]);
			int presencasTotal = Integer.parseInt(tokens[6]);
			
			Deputado novoDeputado = new Deputado(nome, estado, regiao, partido, posicao, gastosTotal, presencasTotal);
			deputadosDoPlenario.add(novoDeputado);
			
		}
		leitor.close();
	}

	public void imprimeDeputado(String partido){
		for(Deputado deputado : deputadosDoPlenario){
			if(deputado.getPartido().equalsIgnoreCase(partido)){
				System.out.println(deputado);
			}
		}
	}
	
	public String deputadoQueMaisGastou(){
		double maiorGasto = 0.0;
		Deputado deputadoGastador = null;
		for(Deputado deputado : deputadosDoPlenario){
			if(deputado.getGastosTotal() > maiorGasto){
				maiorGasto = deputado.getGastosTotal();
				deputadoGastador = deputado;
			}
		}
		return deputadoGastador.getNome();
	}
	
	public double getGastosRegiao(String regiao){
		double gastosDaRegiao = 0.0;
		for(Deputado deputado : deputadosDoPlenario){
			if(deputado.getRegiao().equalsIgnoreCase(regiao)){
				gastosDaRegiao += deputado.getGastosTotal();
			}
		}
		return gastosDaRegiao;
	}

	public String getNomeRegiaoQueMaisGastou(){
		String regiaoGastadeira ="";
		double valorRegiao = 0.0;
		for(Deputado deputado: deputadosDoPlenario){
			if(this.getGastosRegiao(deputado.getRegiao()) > valorRegiao){
				regiaoGastadeira = deputado.getRegiao();
				valorRegiao = this.getGastosRegiao(deputado.getRegiao());
			}
		}
		return regiaoGastadeira;
	}
	
	public ArrayList<Deputado> getDeputadoFrequenciaMaiorIgualACem(){
		ArrayList<Deputado> deputadosFrequenciaCem = new ArrayList<Deputado>();
		for(Deputado deputado : deputadosDoPlenario){
			if(deputado.getPresencasTotal() > 100){
				deputadosFrequenciaCem.add(deputado);
			}
		}
		return deputadosFrequenciaCem;
	}
	
	
	public ArrayList<Integer> getPresencaCandidato(){
		ArrayList<Integer> presencas  = new ArrayList<Integer>();
		for(Deputado deputado : deputadosDoPlenario){
			presencas.add(deputado.getPresencasTotal());
		}
		Collections.sort(presencas);
		return presencas;
	}
	
	public ArrayList<Double> getGastosCandidato(){
		ArrayList<Double> gastos  = new ArrayList<Double>();
		for(Deputado deputado : deputadosDoPlenario){
			gastos.add(deputado.getGastosTotal());
		}
		Collections.sort(gastos);
		return gastos;
	}
	
}
